// Loesung_von_Aufgabe_5.6_5_Entchen

// Alle meine Entchen

// Die Libary wird importiert
import ddf.minim.*;

// Die Objekte werden erstellt
Minim minim;

AudioPlayer player01;
AudioPlayer player02;
AudioPlayer player03;
AudioPlayer player04;
AudioPlayer player05;
AudioPlayer player06;

void setup() 
{
  size(600, 200);
  background(255);

  // Der Konstruktor wird aufgerufen
  minim = new Minim (this);

  // Die mp3-Dateien werden in den jeweiligen Player geladen
  player01 = minim.loadFile("A4.mp3");
  player02 = minim.loadFile("C4.mp3");
  player03 = minim.loadFile("D4.mp3");
  player04 = minim.loadFile("E4.mp3");
  player05 = minim.loadFile("F4.mp3");
  player06 = minim.loadFile("G4.mp3");

  // Die Klaviertasten werden gezeichnet
  stroke(0);
  strokeWeight(2);
  fill(100);
  rect(0, 0, 100, 200);
  rect(200, 0, 100, 200);
  rect(400, 0, 100, 200);

  stroke(0);
  strokeWeight(2);
  fill(255);
  rect(100, 0, 100, 200);
  rect(300, 0, 100, 200);
  rect(500, 0, 100, 200);

  // Die Klaviertasten werden beschriftet
  fill(#56C7FA);
  textSize(30);
  text("A4", 30, 50);
  text("C4", 130, 50);
  text("D4", 230, 50);
  text("E4", 330, 50);
  text("F4", 430, 50);
  text("G4", 530, 50);
}

void draw() 
{
}

/* Wenn sich der Mauszeiger über einer Klaviertaste befindet
 wird durch Drücken einer Maustaste der Player auf den
 Anfang der mp3-Datei zurückgesetzt und anschließend der 
 jeweilige Ton abgespielt. */
void mousePressed() 
{
  if ( mouseX <= 100)
  {
    player01.cue(0); // Player wird auf den Anfang der mp3-Datei gesetzt
    player01.play(); // Ton wird abgespielt
  }
  if (mouseX >= 100 && mouseX <= 200)
  {
    player02.cue(0);
    player02.play();
  }
  if (mouseX >= 200 && mouseX <= 300)
  {
    player03.cue(0);
    player03.play();
  }
  if (mouseX >= 300 && mouseX <= 400)
  {
    player04.cue(0);
    player04.play();
  }
  if (mouseX >= 400 && mouseX <= 500)
  {
    player05.cue(0);
    player05.play();
  }
  if (mouseX >= 500 && mouseX <= 600)
  {
    player06.cue(0);
    player06.play();
  }
}

// Wenn die Maustaste losgelassen wird, stoppt die Wiedergabe des Tons
void mouseReleased()
{
  player01.pause();
  player02.pause();
  player03.pause();
  player04.pause();
  player05.pause();
  player06.pause();
}

/* Beim Verlassen des Sketches werden alle Dateien geschlossen,
 damit es nicht zu Ressourcenproblemen kommt. */
void stop()
{
  player01.close();
  player02.close();
  player03.close();
  player04.close();
  player05.close();
  player06.close();

  minim.stop();
}